package indi.zhifa.recipe.bailan.framework.auth.service;


import com.alibaba.fastjson2.JSONArray;
import indi.zhifa.recipe.bailan.framework.auth.entity.dto.user.ChangePasswdDto;
import indi.zhifa.recipe.bailan.framework.auth.entity.po.BaseRoleEntity;
import indi.zhifa.recipe.bailan.framework.auth.entity.po.BaseUserEntity;

import java.util.List;
import java.util.Map;

public interface IBaseUserService {

    /**
     * 初始化，检测数据库是否有默认数据，如果没有则创建
     */
    Map<String, BaseRoleEntity> initRole(JSONArray pDefaultRoles);

    List<BaseUserEntity> initUser(JSONArray pDefaultUserCfg);


    /**************用户行为************/
    /**
     * 创建用户
     *
     * @param pBaseUserEntity  用户实体
     * @param pRoles 初始角色，如果填空则分配配置文件中的默认角色
     * @param pIniDeps 初始部门
     * @return
     */
    BaseUserEntity createUser(BaseUserEntity pBaseUserEntity, List<String> pRoles, Map<String,String> pIniDeps);

    /**
     * 修改密码
     *
     * @param pChangePasswdDto  修改密码配置
     * @return
     */
    BaseUserEntity changePasswdByUser(ChangePasswdDto pChangePasswdDto);

    /**************管理员行为************/

    /**
     * 重置用户密码
     *
     * @param pUserId  用户Id
     * @return
     */
    BaseUserEntity resetPasswd(Long pUserId);

    /**
     * 设置用户禁用状态
     *
     * @param pUserId  用户Id
     * @param pActive  禁用状态
     * @return
     */
    BaseUserEntity setActive(Long pUserId, boolean pActive);

    /**
     * 删除用户
     *
     * @param pUserId  用户Id
     * @return
     */
    boolean removeUser(Long pUserId);
}
